﻿using System;
using System.ServiceModel;
using System.Security.Permissions;
using Sinacor.Infra.Service.Security.Services;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using System.Collections.Generic;



namespace Sinacor.Servico.Bovespa.Ordens.Service.ServiceContract
{
    [ExceptionShielding]
    [ServiceContract(Namespace = "http://www.bovespa.com.br/Sinacor.Servico.Bovespa.Ordens.Service.ServiceContract", SessionMode = SessionMode.Allowed)]
    public interface IOrdemDigitacao
    {
        /// <summary>
        /// Operacao responsavel por realizar a inserção de uma lista de OrdemDigitação
        /// Alteracoes:
        /// Criação Marcelo Barucci - 28/07/2007
        /// </summary>
        /// <returns>Bool value</returns>
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.BusinessFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.ValidationFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.GeneralFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))] 
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "Inserir")]
        [TransactionRequired]
        [OperationLog]
        bool Inserir(List<DataContract.Request.InserirOrdemDigitacao> pListOrdemDigitacao);

        /// <summary>
        /// ConsultarOrdemDigitacao 
        /// Data: 06/09/2008
        /// Autor: Leandro Liez
        /// Obs: Operação responsavel por retornar a lista de ordemdigitação
        /// </summary>
        /// <param name="pConsultarOrdemDigitacao"></param>
        /// <returns></returns>
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.BusinessFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.ValidationFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.GeneralFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))] 
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ConsultarOrdemDigitacao")]
        List<Service.DataContract.Response.OrdemDigitacaoResponse> ConsultarOrdemDigitacao(Service.DataContract.Request.ConsultarOrdemDigitacao pConsultarOrdemDigitacao);



        /// <summary>
        /// ConsultarOrdemDigitacaoLote 
        /// Data: 18/12/2008    
        /// Autor: Apsilva  
        /// Obs: Operação responsavel por retornar a lista de ordemdigitação por lote
        /// </summary>
        /// <param name="pConsultarOrdemDigitacaoLote"></param>
        /// <returns></returns>
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.BusinessFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.ValidationFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.GeneralFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ConsultarOrdemDigitacaoLote")]
        List<Service.DataContract.Response.OrdemDigitacaoResponse> ConsultarOrdemDigitacaoLote(Service.DataContract.Request.ConsultarOrdemDistribuicaoOrdemLote pConsultarOrdemDigitacaoLote);


        // WAbreu.7COMm
        // 2008-08-20 17:16
        // TASK 1288
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.BusinessFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.ValidationFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.GeneralFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))] 
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "Excluir")]
        bool Excluir(List<DataContract.Request.ExcluirOrdemDigitacao> pListExcluirOrdemDigitacao);


    
    
    }
}
